先來看看一些專案的程式碼
SimplCommerce 的 Result.cs
cloudscribe.SimpleContent 的 CommandResult.cs
像這樣的 Result class 常用到的情境像是去打API後拿資料 當然打API有失敗的可能所以都會想一個處理方法
我自己用的程式碼是
public abstract class GenericResultDto<T>
{
protected bool _isSuccess;
public bool IsSuccess => _isSuccess;
public bool IsFail => _isSuccess == false;
protected string _errorMessage;
public string ErrorMessage => _errorMessage;
protected T _value;
public T Value => _value;
}
public sealed class SuccessResultDto<T> : GenericResultDto<T>
{
public SuccessResultDto(T value = default,string errorMessage = default)
{
_isSuccess = true;
_value = value;
_errorMessage = errorMessage;
}
}
public sealed class FailResultDto<T> : GenericResultDto<T>
{
public FailResultDto(string errorMessage = default, T value = default)
{
_isSuccess = false;
_errorMessage = errorMessage;
_value = value;
}
}
有用一些物件導向手法讓我來說明
public bool IsFail => _isSuccess == false;
使用上的範例code
GenericResultDto<DateTime> Demo(bool isNow)
{
if(isNow)
{
return new SuccessResultDto<DateTime>(DateTime.Now);
}
return new FailResultDto<DateTime>("some message");
}
在新手村學到的各種技巧,混合在一起就會產生不同的效果
只是通常都是停留在看都懂,遇到問題都不知道怎樣運用的階段
所以打好基礎跟找到好團隊一起下副本,就比較容易通過這階段
準備離開新手村時 有這樣的組合技能力 下副本時一定用的上